
package arqwimax;

simple ConventionalCumulative
{
        @display("i=device/cellphone,gold");
    gates:
        input fromBase;
        output toBase;
}

simple ConventionalSelective
{
        @display("i=device/cellphone,steelblue1");
    gates:
        input fromBase;
        output toBase;
}

simple ProposalICumulative
{
        @display("i=device/cellphone,blue");
    gates:
        input fromBase;
        output toBase;
}

simple ProposalISelective
{
        @display("i=device/cellphone,deeppink2");
    gates:
        input fromBase;
        output toBase;
}

simple ProposalII
{                    
        @display("i=device/cellphone,orangered");
    gates:
        input fromBase;
        output toBase;
}

simple ProposalIIICumulative
{                            
        @display("i=device/cellphone,darkturquoise");
    gates:
        input fromBase;
        output toBase;
}

simple ProposalIIISelective
{                      
        @display("i=device/cellphone,blueviolet");
    gates:
        input fromBase;
        output toBase;
}

simple Base
{
        @display("i=device/antennatower_l");
    gates:
        input fromConC;
        output toConC;
        
        input fromConS;
        output toConS;
		
		input fromPr1C;
        output toPr1C;
        
        input fromPr1S;
        output toPr1S;
        
        input fromPr2;
        output toPr2;
        
        input fromPr3C;
        output toPr3C;
        
        input fromPr3S;
        output toPr3S;
}

network WiMAX_ARQ
{
	parameters:
		int num_of_frames;
        int arq_block_size;
        int pdu_size;
        int data_size;
        double bstart;
        double bstop;
        int simtype;        
    @display("bgi=background/streetmap,s");
    submodules:   
        Conventional_Cumulative : ConventionalCumulative;
        Conventional_Selective : ConventionalSelective;
        Proposal_I_Cumulative : ProposalICumulative;
        Proposal_I_Selective : ProposalISelective;
        Proposal_II : ProposalII;
        Proposal_III_C:ProposalIIICumulative;
        Proposal_III_S:ProposalIIISelective;
		Base_Station : Base;
    connections:
        Conventional_Cumulative.toBase   -->  Base_Station.fromConC;
        Conventional_Cumulative.fromBase <--  Base_Station.toConC;
        
        Conventional_Selective.toBase    -->  Base_Station.fromConS;
        Conventional_Selective.fromBase  <--  Base_Station.toConS;
               
        Proposal_I_Cumulative.toBase     -->  Base_Station.fromPr1C;
        Proposal_I_Cumulative.fromBase   <--  Base_Station.toPr1C;
        
        Proposal_I_Selective.toBase      -->  Base_Station.fromPr1S;
        Proposal_I_Selective.fromBase    <--  Base_Station.toPr1S;

		Proposal_II.toBase               -->  Base_Station.fromPr2;
        Proposal_II.fromBase             <--  Base_Station.toPr2;
        
        Proposal_III_C.toBase            -->  Base_Station.fromPr3C;
        Proposal_III_C.fromBase          <--  Base_Station.toPr3C;
        
        Proposal_III_S.toBase            -->  Base_Station.fromPr3S;
        Proposal_III_S.fromBase          <--  Base_Station.toPr3S;
}
    